# 3.1 注释
# 注释的目的：增强代码的可读性（能够理解代码）
# 注释的分类：
# 单行注释： # 注释的文字 快捷键：ctrl + /
# 多行注释（常用于函数和类的解释说明）： """多行注释文字""" '''多行注释文字'''
print("这个是注释测试1")
print("这个是注释测试2")
print("这个是注释测试3")
print("这个是注释测试4")
print("这个是注释测试5")
print("这个是注释测试6")
# 注释快捷键：ctrl + /



# 3.2 变量🏴
# 标识符命名习惯
# 作用：行业内约定俗成的一种规范
# 大驼峰：常用于类命名
# 小驼峰：常用于项目命名
# 下划线命名：常用于变量/函数/方法/文件等
# 驼峰命名法
# 大驼峰：每个单词首字母大写 MyName
# 小驼峰：第一个单词小写，其余单词首字母都大写 myName
# 下划线命名法（蛇形命名法）
# 多个单词通过下划线连接起来即可 my_name



# 3.3 数据类型
# 查看数据类型的函数: type(数据/变量名)
# 如果把结果通过控制台打印出来 : print(被打印的对象)
# 数字类型
num1 = 15
num2 = 1.80
num3 = True
print(type(num1))
print(type(num2))
print(type(num3))
# 非数字类型（序列类型）
a1 = "abc"
a2 = [11, "张三", 1.11]
a3 = (12, "李四", 2.22)
a4 = {11, "张三", 3.33}
a5 = {"name": "张三", "age": 18}
print(type(a1))
print(type(a2))
print(type(a3))
print(type(a4))
print(type(a5))
# 总结：查看某个变量/值的数据类型的函数用type,如果要打印结果，需要用print函数


# 强制类型转换
# 定义数据
num1 = "100"
num2 = "1.99"
# 强制转换
print(type(int(num1)))
print(type(float(num2)))
print(type(float(num1)))
info = 12345
print(type(str(info)))
info1 = [11, "aa", True, 1.88]
print(type(str(info1)))
print(type(tuple(info1)))
# 转换为集合（集合中元素不能重复：可以去重）
info2 = [11, 22, 33, 11, 11, 11, 33, 44]
print(set(info2))
print(type(set(info2)))


# 4. 程序的输入输出
# 4.1 程序的输出
# 输出函数： print(数据/变量名)
# 通过format函数格式化输出🏴
# 表示方式： "{}".format(变量名)
# 需求：小明今年18岁了，他的身高是1.80米
name = "小明"
age = 18
height = 1.80
# 通过format函数输出
print("{}今年{}岁了，他的身高是{}米".format(name, age, height))
print("{0}今年{1}岁了，他的身高是{2}米".format(name, age, height))
# {}在字符串中相当于占位符号，如果是多个变量，可以在{}中写数字


# f-格式化输出🏴
# 表示方式： f"{变量名}"
# 需求：小明今年18岁了，他的身高是1.80米
name = "王五"
age = 20
height = 1.85
print(f"{name}今年{age}岁了，他的身高是{height}米")
print(f"{name}明年就{age+1}岁了")


# 4.2 程序的输入🏴
# 语法表示： 变量名 = input("提示信息：")
# 输入小明同学的年龄
name = "小明"
age = int(input("请输入年龄："))
print(f"{name}同学的年龄是：{age}")
print(f"{name}同学的年龄是：{age + 1}")

# 5. 运算符
num1 = 10
num2 = 20
# 常规计算
print(f"求和结果：{num1 + num2}")
print(f"求差结果：{num1 - num2}")
print(f"求乘结果：{num1 * num2}")
print(f"求除结果：{num1 / num2}")
print(f"求商结果：{num1 // num2}")
print(f"求余结果：{num1 % num2}")

# 特殊场景
# 求余数常常运用奇偶数判断
print(1 % 2 == 0)
# 幂运算：10的3次方
print(60 ** 3)
# 特殊的求和: 字符串和字符串求和 ‐‐ > 字符串拼接
print("20" + "20")
# 特殊的乘法：字符串和数字相乘 ‐‐ > 字符串重复多少次
print("30" * 3)


# 5.2 比较运算符
num1 = 100
num2 = 20
print(f"{num1 == num2}") # False
print(f"{num1 != num2}") # True
print(f"{num1 > num2}") # False
print(f"{num1 < num2}") # True
print(f"{num1 >= num2}") # False
print(f"{num1 <= num2}") # True
print(10 == "10")
# 数字和字符串比较结果一定是False


# 5.3 赋值运算符
# 定义两个数字
num1 = 10
num2 = 20
num1 += num2
print("num1 =", num1)
num1 -= num2
print("num1 =", num1)
num1 *= num2
print("num1 =", num1)
num1 /= num2
print("num1 =", num1)
num1 %= num2
print("num1 =", num1) 
# 结论：
# 先运算再赋值，注意前后变量次序
# python默认按照行顺序执行代码
# 应用场景：累计求和/差/积等场景使用